#ifndef __SQL_LIST_H__
#define __SQL_LIST_H__

// 导入头文件
#include "../../include/Element_data.h"

/* *****************************  声明数据关系  ***************************** */
#define Data_MAX 100

typedef struct sql_list
{
    Elenemt_data data[Data_MAX]; 
    int max;
    int len;
}sql_list;

/*
    顺序表的创建：Init_Sql_List
    顺序表的插入：tail_insert_tail pos_insert_list
    顺序表的删除：tail_del_list pos_del_list
    顺序表的查找：find_by_index  find_by_value
    顺序表的遍历：printf_Sql_List
    顺序表的判空：IsEmpty_Sql_List
    顺序表的清空：Clear_Sql_List
    顺序表的合并：Merge_Sql_Lists
    顺序表的扩容：Expand_Sql_List
    顺序表的销毁：Destroy_Sql_List
*/

/* *****************************  声明基本操作函数  ***************************** */
/******************************
Init_Sql_List
功能:初始化 静态 顺序表
参数:无
返回值:
    成功 0
    失败 -1
******************************/
int Init_Sql_List(sql_list * list);
// void tail_insert_tail pos_insert_list

/******************************
insert_tail_sql_list
功能:静态 顺序表 插入 位置:尾部
参数:
    @list 需要插入的顺序表
    @data 插入顺序表中的数据
返回值:
    成功 0
    失败 -1
******************************/
int insert_tail_sql_list(sql_list * list  , Elenemt_data data);

/******************************
insert_pos_sql_list
功能:静态 顺序表 插入 位置:任意
参数:
    @list 需要插入的顺序表
    @data 插入顺序表中的数据
    @pos 插入的位置
返回值:
    成功 0
    失败 -1
******************************/
int insert_pos_sql_list(sql_list * list  , Elenemt_data data , int pos);

/******************************
delete_tall_sql_list
功能:静态 顺序表 删除 位置:尾部
参数:
    @list 需要删除的顺序表
返回值:
    成功 0
    失败 -1
******************************/
int delete_tail_sql_list(sql_list * list);

/******************************
delete_pos_sql_list
功能:静态 顺序表 删除 位置:任意
参数:
    @list 需要删除的顺序表
    @pos 删除的位置
返回值:
    成功 0
    失败 -1
******************************/
int delete_pos_sql_list(sql_list * list  , int pos);

/******************************
find_name_sql_list
功能:静态 顺序表 查找 内容:名字
参数:
    @list 需要查找的顺序表
    @name 查找的名字
返回值:
    成功 返回 pos 第一个名字匹配的位置
    失败 EOF
******************************/
int find_name_sql_list(sql_list * list , char * name);

/******************************
find_soc_sql_list
功能:静态 顺序表 查找 内容:成绩
参数:
    @list   需要查找的顺序表
    @soc    查找的成绩
    @pos_s  由于可能查找到多个成绩相同的人 所以需要返回多个人
返回值:
    成功 返回 pos 第一个名字匹配的位置
    失败 EOF

说明
    pos_s 内容说明
    pos_s[0] 代表找到的 位置个数 如果 pos_s[0] == 0 则代表没找到
    pos_s[n] 中存放 找到的 pos 
******************************/
int find_soc_sql_list(sql_list * list , int soc , int * pos_s , int pos_s_len);

/*******************************
Up_data_sql_list
功能:静态 顺序表 修改 内容:名字
参数:
    @list 需要修改的顺序表
    @pos 需要修改的位置
返回值:
    成功 0
    失败 -1
******************************/
int Up_data_sql_list(sql_list * list , int pos);

/******************************
IsEmpty_Sql_List
功能:静态 顺序表 判空
参数:
    @list 要判空的顺序表
返回值:
    不为空 0
    为空 -1
******************************/
int IsEmpty_Sql_List(sql_list * list);

/******************************
Clear_Sql_List
功能:静态 顺序表 清空
功能:
    @list 要清空的顺序表
返回值:
    成功 0
    失败 -1
******************************/
int Clear_Sql_List(sql_list * list);

/******************************
printf_Sql_List
功能:打印静态顺序表中的所有数据
参数:
    @list 需要打印的顺序表
返回值:
    无
******************************/
void printf_Sql_List(sql_list * list);

#endif
